Java 反射设置List属性 您所在的位置:网站首页 list 属性 Java 反射设置List属性

Java 反射设置List属性

2024-07-05 03:35| 来源: 网络整理| 查看: 265

使用 Java 反射可以动态地设置对象的属性值,包括 List 类型的属性。以下是一个示例代码,演示如何通过反射设置 List 类型的属性:

假设有一个类 Person,包含一个 List 类型的属性 names:

java

public class Person { private List names; public List getNames() { return names; } public void setNames(List names) { this.names = names; } }

现在,我们使用反射来动态地设置 Person 对象的 names 属性:

import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) throws Exception { Person person = new Person(); Class clazz = person.getClass(); // 获取 names 属性对应的 Field 对象 Field field = clazz.getDeclaredField("names"); // 设置属性可访问性为 true,以避免访问权限问题 field.setAccessible(true); List names = new ArrayList(); names.add("Alice"); names.add("Bob"); // 设置 names 属性的值为新的 List 对象,注意要使用 field.set() 方法来设置属性值,而不是直接使用 names = person.names = names; 的形式赋值 field.set(person, names); // 输出 [Alice, Bob] System.out.println(person.getNames()); } }

在上面的代码中,我们首先创建了一个 Person 对象,然后获取了该对象的 Class 对象。接着,我们通过调用 Class 对象的 getDeclaredField() 方法获取了 names 属性对应的 Field 对象,并将属性的可访问性设置为 true,以确保我们可以访问该属性。接下来,我们创建了一个新的 List 对象,并将两个字符串添加到列表中。最后,我们通过调用 Field 对象的 set() 方法将新的 List 对象设置为 names 属性的值。在输出结果中可以看到,我们已经成功地设置了 names 属性的值,并且成功地访问了该属性的值。

测试打印结果



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有